package com.example.myapplication1.publishFriendCircle;

import android.graphics.Canvas;

import androidx.annotation.Nullable;
import androidx.recyclerview.widget.RecyclerView;

public interface DragListener<T, VH extends RecyclerView.ViewHolder> {
    /**
     * 用户是否将 item拖动到特殊区域处，根据状态改变颜色
     *
     * @param isInArea
     * @param isFingerUp 是否抬起手指
     * @param position   当前拖动Item位置
     * @return 是否用户自己操作RecyclerView视图的变化, 数据不管
     */
    boolean stateIsInSpecialArea(boolean isInArea, boolean isFingerUp, int position);

    void doBothInAreaAndFingerUp(boolean isInArea, boolean isFingerUp);

    boolean canDrag(VH vh, int position, @Nullable T t);

    void onPreDrag();

    void onDraging();

    void onReleasedDrag();

    /**
     * 用户自己自己对拖拽的距离进行判断,是否执行某些特定的操作
     */
    boolean checkIsInSpecialArea(Canvas c, RecyclerView recyclerView,
                                 RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive);

    /**
     * 当用户与item的交互结束并且item也完成了动画时调用
     */
    void clearView();
}
